package com.ihg.hiex.admin.service.session;

import java.util.List;

import com.ihg.hiex.admin.service.DataService;
import com.ihg.hiex.entity.session.Session;
import com.ihg.hiex.entity.session.participator.SessionParticipator;
import com.ihg.hiex.entity.user.Assessor;
import com.ihg.hiex.entity.user.Delegate;

/**
 *
 * @author Ark
 *
 */
public interface SessionParticipatorService extends DataService<SessionParticipator> {

    /**
     * @param session
     * @return
     */
    public List<Assessor> listAssessor(Session session);
    
    /**
     * 
     * @param session
     * @return
     */
    public List<Delegate> listDelegate(Session session);
    
    /**
     * 
     * @param session
     * @return
     */
    public List<Long> listDelegateId(Session session);
    
    /**
     * 
     * @param session
     * @param assessorId
     * @return
     */
    public List<SessionParticipator> listLeadParticipator(Session session, Long assessorId);
    
    /**
     * 
     * @param session
     * @param assessorId
     * @param subgroup
     * @return
     */
    public List<SessionParticipator> listPeerParticipator(Session session, Long assessorId, String subgroup);
    
    /**
     * 
     * @param session
     * @return
     */
    public List<SessionParticipator> list(Session session);
    
    /**
     * 
     * @param session
     * @param subgroup
     * @return
     */
    public List<SessionParticipator> list(Session session, String subgroup);
    
    /**
     * 
     * @param session
     * @param delegateId
     * @return
     */
    public SessionParticipator loadByDelegate(Session session, Long delegateId);
    
    /**
     * 
     * @param delegateId
     * @return
     */
    public SessionParticipator loadByDelegate(Long delegateId);
    
    /**
     * 
     * @param session
     * @param assessorId
     * @return
     */
    public SessionParticipator loadByAssessor(Session session, Long assessorId);
    
    /**
     * 
     * @param session
     * @param subgroup
     * @param assessorId
     * @return
     */
    public SessionParticipator loadPeerParticipator(Session session, String subgroup, Long assessorId);
    
}
